package com.zch.house.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.zch.house.dao.LesseeDao;
import com.zch.house.entity.Lessee;
import com.zch.house.service.LesseeService;
import com.zch.house.util.XmlSession;

public class LesseeServiceImpl extends XmlSession implements LesseeService {
	private final int PAGE_SIZE = 20;

	@Override
	public List<Lessee> getAllLesseeByPage(String name, String phone, String sex, String idCard, int pageIndex) {
		// 使用map集合来存放参数
		Map<String, Object> map = new HashMap<>();
		map.put("name", name);
		map.put("phone", phone);
		map.put("sex", sex);
		map.put("idCard", idCard);
		int firstRow = (pageIndex - 1) * PAGE_SIZE + 1;
		int lastRow = pageIndex * PAGE_SIZE;
		map.put("firstRow", firstRow);
		map.put("lastRow", lastRow);
		
		//加载配置文件
		initSession();
		//获得mapper的代理类
		LesseeDao dao = session.getMapper(LesseeDao.class);
		//调用dao层方法
		List<Lessee> list = dao.getAllLessee(map);
		//提交事务并关闭session
		closeSession();
		return list;
	}

	@Override
	public int getTotalCount(String name, String phone, String sex, String idCard) {
		// 使用map集合来存放参数
		Map<String, Object> map = new HashMap<>();
		map.put("name", name);
		map.put("phone", phone);
		map.put("sex", sex);
		map.put("idCard", idCard);
		
		//加载配置文件
		initSession();
		//获得mapper的代理类
		LesseeDao dao = session.getMapper(LesseeDao.class);
		// 调用dao层方法获得查询到的所有数据的个数
		int counts = dao.getTotalCount(map);
		//提交事务并关闭session
		closeSession();
		// 计算总页数
		int totalPages = counts % PAGE_SIZE == 0 ? counts / PAGE_SIZE : counts / PAGE_SIZE + 1;
		return totalPages;
	}

	@Override
	public Lessee getLesseeById(int id) {
		//加载配置文件
		initSession();
		//获得mapper的代理类
		LesseeDao dao = session.getMapper(LesseeDao.class);
		//调用dao层方法
		Lessee lessee = dao.getLesseeById(id);
		//提交事务并关闭session
		closeSession();
		return lessee;
	}

	@Override
	public boolean addLessee(Lessee lessee) {
		//加载配置文件
		initSession();
		//获得mapper的代理类
		LesseeDao dao = session.getMapper(LesseeDao.class);
		//调用dao层方法
		boolean flag = dao.addLessee(lessee);
		//提交事务并关闭session
		closeSession();
		return flag;
	}

	@Override
	public boolean deleteLessee(int id) {
		Lessee lessee = getLesseeById(id);
		lessee.setL_status(0);//将租户信息状态设置为已失效
		//更新数据库中的信息
		boolean flag = updateLessee(lessee);
		if(flag){
			return true;
		}
		return false;
	}

	@Override
	public boolean updateLessee(Lessee lessee) {
		//加载配置文件
		initSession();
		//获得mapper的代理类
		LesseeDao dao = session.getMapper(LesseeDao.class);
		//调用dao层方法
		boolean flag = dao.updateLessee(lessee);
		//提交事务并关闭session
		closeSession();
		return flag;
	}

}
